package main

import (
	"context"
	"fmt"
	"google.golang.org/grpc"
	service "ms-produce/service"
	"net"
)

// ProductService 3.1 新建接口体,纳入 service.UnimplementedProdServiceServer 这个强制需要
type ProductService struct {
	service.UnimplementedProdServiceServer
}

// GetProductStock 3.2 实现具体的方法
func (p ProductService) GetProductStock(ctx context.Context, req *service.ProductRequest) (*service.ProductResponse, error) {
	fmt.Println("显示客户端传过来的信息", req)
	// 组装返回体信息
	res := service.ProductResponse{ProdStock: 3}
	return &res, nil
}

// 启动监听服务
func startListen(s *grpc.Server, ll net.Listener) error {
	return s.Serve(ll)
}

func main() {

	// 1 监听端口
	ls, err := net.Listen("tcp", ":3002")
	if err != nil {
		fmt.Println("1 监听端口 ", err)
		return
	}
	fmt.Println("监听", ls)
	// 2 启用grpc
	s := grpc.NewServer()
	// 3 新建接口体并实现具体方法,然后注册服务
	service.RegisterProdServiceServer(s, &ProductService{})
	// 4 启动服务端口
	err = startListen(s, ls)
	if err != nil {
		fmt.Println("启动服务失败")
		return
	}

}
